BLE裝置未連線時,可以透過發送廣播封包來讓大家知道裝置的存在,也可以掃描附近的廣播裝置。掃描的過程稱做"Device discovery"。掃描可分為兩種:主動(active)與被動(passive)。
這兩者的差異為:
主動掃描會發出掃描請求(Scan request)用來要求廣播設備提供額外的訊息,廣播設備收到掃描請求時則會回應掃描回應(Scan response);
被動掃描則只會接收廣播設備主動發出的廣播資料(Advertising data)。
注意:"Discovery"和"Scanning)可能會互換使用。
下圖畫出在掃描事件中,掃描裝置向廣播裝置發送掃描請求的順序。
提到廣播的時間點,有幾個參數必須要先認識。每個參數在藍牙核心規範(Bluetooth core specification)中都有訂定範圍。Time Inter Frame Space (T_IFS) 是同一個廣播頻道中,連續兩個連續數據封包的時間間隔,BLE的規範是150us。
Scan Parameter | Description | Range |
---|---|---|
Scan Window | 在一個頻道上掃描的持續持間 | 10ms to 10.24s |
Scan Interval | 兩個連續掃描窗口(Scan window)起始時間的間隔 | 10ms to 10.24s |
Scan Duration | 藍牙裝置處於掃描狀態的時間 | 10ms to 65534ms, or scans indefinitely |
下圖直觀的呈現掃描參數: | ||
請注意,掃描頻道的順序是無法被設置的。 | ||
掃描設備將在每個掃描區間(Scan Interval)依序掃描CH 37(2402 MHz)、CH 38(2426 MHz)和CH 39(2480 MHz),並在每個通道掃描一段時間(Scan Window)。 |
次要廣播頻道上的可掃描廣播封包也可以發起掃描請求(Scan Request)和掃描回應(Scan Response)。
他們的封包類型叫做"AUX_SCAN_REQ"和"AUX_SCAN_RSP"。
下表整理了所有與掃描有關的封包類型:
Scanning PDU | 發起的裝置 | Payload |
---|---|---|
SCAN_REQ | 掃描裝置 | 掃描裝置的位址和廣播裝置的位址 |
SCAN_RSP | 廣播裝置 | 廣播裝置的位址和0~31 Bytes的掃描回應封包 |
AUX_SCAN_REQ | 掃描裝置 | 掃描裝置的位址和廣播裝置的位址 |
AUX_SCAN_RSP | 廣播裝置 | 廣播裝置的位址和0~254 Bytes 的掃描回應封包 |
掃描請求和掃描回應都在接收到廣播的那個頻道和PHY中被發送。
以上是TI 官方提供的文件翻譯。
參考文章: